//ajax这边使用对象接受参数
/*
 url,methods,data,timeout,headers,success,fail 版本1
*/
/* function myajax({
    url,
    method,
    data={},
    timeout=2000,
    header={},
    success,
    fail,
}={}) {
   const xhr=new XMLHttpRequest()
   xhr.onload=()=>{
        if(xhr.readyState !== XMLHttpRequest.DONE) return
        //返回值是200-300之前表示响应成功,监听状态
        if(xhr.readyState>=200 && xhr.readyState<=300 ||xhr.readyState===304) {
             console.log('执行成功，调用回调函数')
             success && success(xhr.response)
        }
        else {
            console.log('执行失败')
            fail && fail(xhr.response)
        }
   }
   //设置超时时间
    xhr.timeout=timeout
    //设置响应类型
    xhr.responseType='json'
    //获取参数，拼接到url路径 格式为 ?name=chy & age=18 
    const params=Object.keys(data).map(key=>`${key}=${encodeURIComponent(data[key])}`)
    //params=['name=chy','age=18'] 
    const paramsString=params.join('&')  //拼接形成 name=chy&age=18
    if(method.toLowerCase() === "get") {
        //get请求，需要在url后面添加 ？
        xhr.open(method,url+'?'+paramsString)
        xhr.send()
    }else {
        xhr.open(method,url)
        //设置请求头格式
        xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
        xhr.send(paramsString) //发送数据
    }
   return xhr
} */
//版本2 基于Promise对象的myajax封装
function myajax({
    url,
    method,
    data = {},
    timeout = 2000,
    header = {}
} = {}) {
    return new Promise((reslove, reject) => {
        const xhr = new XMLHttpRequest()
        xhr.onload = () => {
            if (xhr.readyState !== XMLHttpRequest.DONE) return
            //返回值是200-300之前表示响应成功,监听状态
            if (xhr.readyState >= 200 && xhr.readyState <= 300 || xhr.readyState === 304) {
                console.log('执行成功，调用回调函数')
                reslove()
            }
            else {
                console.log('执行失败')
                reject()
            }
        }
        //设置超时时间
        xhr.timeout = timeout
        //设置响应类型
        xhr.responseType = 'json'
        //获取参数，拼接到url路径 格式为 ?name=chy & age=18 
        const params = Object.keys(data).map(key => `${key}=${encodeURIComponent(data[key])}`)
        //params=['name=chy','age=18'] 
        const paramsString = params.join('&')  //拼接形成 name=chy&age=18
        if (method.toLowerCase() === "get") {
            //get请求，需要在url后面添加 ？
            xhr.open(method, url + '?' + paramsString)
            xhr.send()
        } else {
            xhr.open(method, url)
            //设置请求头格式
            xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
            xhr.send(paramsString) //发送数据
        }
    })
}